package snake;

import ui.SnakeUserInterface;
import java.util.Random;


public class Veld {
	int hoogte;
	int breedte;
	CoordinateRow snake;
	Coordinate appel;
	Richting richting;
	boolean dood;
	SnakeUserInterface ui;
	int snelheid;

	Veld(int hoogte, int breedte,int snelheid){
		this.hoogte = hoogte;
		this.breedte = breedte;
		this.snelheid = snelheid;
		richting = new Richting();
		snake = new CoordinateRow(hoogte * breedte);
		zetAppelOpVeld();		
		dood = false;
	}

	void schuifSnakeOp(){
		Coordinate nieuweCoordinaat = new Coordinate(snake.coordinaatRij[0].x,snake.coordinaatRij[0].y);
		nieuweCoordinaat.verschuif(richting.richting);
		if((snake.checkOfInRow(nieuweCoordinaat))){
			dood = true;
		} else if(appel.isGelijkAan(nieuweCoordinaat)){
			zetAppelOpVeld();
			snake.schuifEenNaarRechtsEnVoegToe(nieuweCoordinaat);
		} else {
			nieuweCoordinaat.x = (nieuweCoordinaat.x + breedte) % breedte;
			nieuweCoordinaat.y = (nieuweCoordinaat.y + hoogte) % hoogte;
			snake.schuifEenNaarRechtsEnVoegToe(nieuweCoordinaat);
			snake.verwijderLaatste();
		}
	}

	void zetAppelOpVeld(){
		Random randomGenerator = new Random();
		int randomX = randomGenerator.nextInt(breedte);
		int randomY = randomGenerator.nextInt(hoogte);
		Coordinate nieuweAppel = new Coordinate(randomX,randomY);
		if(!(snake.checkOfInRow(nieuweAppel))){
			appel = new Coordinate(randomX,randomY);
		} else { 
			zetAppelOpVeld();
		}
	}
}
